package org.rcgwt.client.ui.themes;

import java.util.Map;

import org.rcgwt.client.theme.CssStyle;
import org.rcgwt.client.ui.calendar.renderer.IRenderer;
import org.rcgwt.client.ui.themes.StandardTheme.RendererLevel;
import org.rcgwt.client.ui.themes.StandardTheme.RendererType;

public interface ITheme {

	/* I. Styles */
	/* Main Styles */
	CssStyle getMainStyle();

	CssStyle getCalendarGridStyle();

	CssStyle getCalendarWeekGridStyle();

	/* Popup Panel styles */

	CssStyle getPopupPanelStyle();

	CssStyle getPopupYearGridStyle();

	CssStyle getPopupMonthGridStyle();

	/* Cell styles */

	CssStyle getCalendarGridCellStyle();

	CssStyle getSelectedGridCellStyle();

	CssStyle getDisabledGridCellStyle();

	CssStyle getCursorGridCellStyle();

	/* Days styles */

	CssStyle getCurrentDayStyle();

	CssStyle getBriefDaysStyle();

	CssStyle getPreviousAndNextDayStyle();

	/* Panel styles */

	CssStyle getYearAndMonthPanelStyle();

	CssStyle getMediumYearAndMonthPanelStyle();

	CssStyle getFullYearPanelStyle();

	CssStyle getFullMonthPanelStyle();

	CssStyle getSemanticNavigationPanelStyle();

	/* Label styles */

	CssStyle getWeeksStyle();

	CssStyle getSelectedWeeksStyle();

	CssStyle getYearLabelStyle();

	CssStyle getMonthLabelStyle();

	CssStyle getSelectedYearMonthLabelStyle();

	CssStyle getSelectedMonthesLabelStyle();

	CssStyle getMonthesStyle();

	CssStyle getSingleLineColumnStyle();

	CssStyle getShortColumnStyle();

	/* Button styles */

	CssStyle getTodayButtonStyle();

	CssStyle getPreviousYearButtonStyle();

	CssStyle getNextYearButtonStyle();

	CssStyle getPreviousMonthButtonStyle();

	CssStyle getNextMonthButtonStyle();

	CssStyle getPreviousButtonStyle();

	CssStyle getNextButtonStyle();

	CssStyle getArrowButtonStyle();

	CssStyle getOpenedArrowButtonStyle();

	/* Disabled Buttons */
	
	CssStyle getForbiddenStyle();

	CssStyle getDisabledPreviousButtonStyle();

	CssStyle getDisabledNextButtonStyle();

	/* Events Styles */

	CssStyle getHolidaysDayStyle();

	CssStyle getSpecialDayStyle();

	CssStyle getBusyDayStyle();

	CssStyle getOthersDayStyle();

	CssStyle[] getEventStyles();

	/* Renderer */

	Map<RendererType, IRenderer> getRenderers(RendererLevel rt);
}
